import java.util.Comparator;
import java.util.PriorityQueue;

// 优先级队列实现大顶堆
// 如果不写Comparator则会默认为小顶堆排序，从小到大
public class maxHeap {
    public static void main(String[] args) {
        PriorityQueue<Integer> queue=new PriorityQueue<>(11, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //compareTo, o2为目标对象，o2>o1，返回值为1；o2<o1，返回值为-1；相等则返回值为0
                System.out.println("this is comparison result of: " + o2 + o1 + "," + o2.compareTo(o1));
                return  o2.compareTo(o1);
                //return o2 - o1; 的效果和上面的代码是一样的

                //return o1.compareTo(o2); 则是以o1为目标对象，此时还是实现小顶堆排序
            }
        });
        queue.add(1);
        queue.add(5);
        queue.add(2);
        queue.add(3);
        queue.add(9);
        queue.add(10);
        queue.add(4);
        for(Integer i : queue){
            System.out.println("just print: " + i);
        }
        while (!queue.isEmpty())
        {
            System.out.println("this is queue peek: " + queue.poll());
        }
    }
}
